package com.softdev.system.redis.controller;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author yangshaui
 */
@RestController
@RequestMapping("/redisTest")
public class RedisController2 {

    /**
     * @Cacheable(value=”accountCache”)，这个注释的意思是，当调用这个方法的时候，
     * 会从一个名叫 accountCache 的缓存中查询，如果没有，则执行实际的方法（即查询数据库），
     * 并将执行的结果存入缓存中，否则返回缓存中的对象。这里的缓存中的 key 就是参数 userName，value 就是 Account 对象。
     * “accountCache”缓存是在 spring*.xml 中定义的名称。
     * @param userName
     * @return
     */
    @GetMapping("/test1")
    @Cacheable(value="accountCache")
    public String getAccountByName(String userName) {
        // 方法内部实现不考虑缓存逻辑，直接实现业务
        System.out.println("real query account."+userName);
        return userName;
    }
}
